package com.education.welco.mapper;

import com.education.welco.pojo.MineResTable;
import com.education.welco.pojo.SResources;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 我的资源库资源 持久层
 *
 * @Author: liftsail
 * @Date: 2022-10-22
 * @Description: 不积跬步无以至千里
 */
@Mapper
public interface MineResTableMapper {

    /**
     * 查询我的资源库资源信息
     *
     * @param mineResId 我的资源库资源ID
     * @return 我的资源库资源信息
     */
    public MineResTable selectMineResTableById(Integer mineResId);

    /**
     * 查询我的资源库资源列表
     *
     * @param mineResTable 我的资源库资源信息
     * @return 我的资源库资源集合
     */
    public List<MineResTable> selectMineResTableList(MineResTable mineResTable);

    /**
     * 新增我的资源库资源
     *
     * @param mineResTable 我的资源库资源信息
     * @return 结果
     */
    public int insertMineResTable(MineResTable mineResTable);

    /**
     * 修改我的资源库资源
     *
     * @param mineResTable 我的资源库资源信息
     * @return 结果
     */
    public int updateMineResTable(MineResTable mineResTable);

    /**
     * 删除我的资源库资源
     *
     * @param mineResId 我的资源库资源ID
     * @return 结果
     */
    public int deleteMineResTableById(Integer mineResId);

    /**
     * 批量删除我的资源库资源
     *
     * @param mineResIds 需要删除的数据ID
     * @return 结果
     */
    public int deleteMineResTableByIds(String[] mineResIds);

    /**
     * 根据目录菜单的目录id查找资源表的资源
     *
     * @param catalogId
     * @return
     */
    List<MineResTable> queryResListByCatalogId(@Param("catalogId") Integer catalogId, @Param("resName") String resName);

    /**
     * 查找某一类型的全部资源    老师id  查找的资源type  , 资源表 目录 in 目录
     *
     * @param catalogIdList
     * @return
     */
    List<MineResTable> queryAllResListByTeaIdAndType(@Param("catalogIdList") List<Integer> catalogIdList, @Param("resName") String resName, @Param("state") String state,@Param("type") Integer type);

    /**
     * 依据idList查找对应资源的url
     *
     * @param idList
     * @return
     */
    List<MineResTable> queryResListByIdList(@Param("idList") List<String> idList);

    /**
     * 删除我的资源库资源-逻辑删除
     *
     * @param idList
     * @return
     */
    int logicDeleteMineResTableByIds(@Param("idList") List<String> idList);

    /**
     * 删除我的资源库资源-逻辑还原
     *
     * @param idList
     * @return
     */
    int logicRevertMineResTableByIds(@Param("idList") List<String> idList);

    /**
     * 回收站列表查询  文件类型 文件名称  分页查询   (全部资源目录的资源表关联)
     *
     * @param teaId   老师id
     * @param type    资源类型 0全部,1,2,3
     * @param resName 资源名称
     * @return
     */
    List<MineResTable> selectMineResTableRecycleList(@Param("teaId") Integer teaId, @Param("type") Integer type,
                                                     @Param("resName") String resName, @Param("orderBy") String orderBy);

    /**
     * 通过id集合查询详细信息
     *
     * @param selectedIdList
     * @return
     */
    List<SResources> queryResInfoListByIdList(@Param("selectedIdList") List<String> selectedIdList);

    /**
     * 移动资源分组
     *
     * @param idList
     * @param catalogId
     * @return
     */
    int moveBatch(@Param("idList") List<String> idList, @Param("catalogId") Integer catalogId);

    Integer deleteMineResTableByUrl(@Param("contentUrl") String contentUrl);

    Integer updateMineResTableByUrl(@Param("contentUrl") String contentUrl, @Param("state") String state);
}